package com.ljm.sys.auth.api;

import com.ljm.common.page.PageDto;
import com.ljm.sys.auth.dto.SysAuthPermissionDto;
import com.ljm.sys.org.dto.SysOrgUserDto;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * <p>
    * 系统权限 接口
    * </p>
 *
 * @author HuamingChen
 * @since 2019-02-25
 */
public interface SysAuthPermissionApi {
    /**
     * Description: 获取登录用户拥有的权限
     *
     * @param userId 用户id
     * @return 权限
     * @ 异常
     * @author ming
     * @date 2018年8月26日 下午5:02:50
     * @see
     */
    Set<String> getUserPermission(Long userId) ;

    /**
     *
     * @param userDto 用户信息
     * @param dto 权限
     * @ 异常
     */
    void saveData(SysOrgUserDto userDto,SysAuthPermissionDto dto);

    /**
     * 删除权限
     * @param ids 主键集合
     * @ 异常
     */
    void del(List<Long> ids);

    /**
     * 获取数据
     * @param id 主键
     * @return 权限信息
     * @ 异常
     */
    SysAuthPermissionDto getDataById(Long id);

    /**
     * 分页获取数据
     * @param permissionName 权限名称
     * @param permissionCode 权限code
     * @param groupName 分组名称
     * @param pageNo 页码
     * @param pageSize 页大小
     * @return 分页数据
     * @ 异常
     */
    PageDto<SysAuthPermissionDto> getDataByPage(String permissionName, String permissionCode,
                                                String groupName, Integer pageNo, Integer pageSize);

    /**
     * 获取所有权限，并分组
     * @return 权限信息
     * @ 异常
     */
    Map<String,List<SysAuthPermissionDto>> getPermissionsWithGroup();

    /**
     * 获取权限
     * @return 权限数据
     * @ 异常
     */
    List<SysAuthPermissionDto> getAllPermission();
}
